int peakIndexInMountainArray(vector<int>& arr) {
    int left = 0, right = arr.size() - 1;
    while (left < right) {
        int mid = left + (right - left) / 2;
        if (arr[mid] < arr[mid + 1])
            left = mid + 1;
        else
            right = mid;
    }
    return left;
}
int findPeakElement(vector<int>& nums) {
    int left = 0, right = nums.size() - 1;
    while (left < right) {
        int mid = left + (right - left) / 2;
        if (nums[mid] > nums[mid + 1])
            right = mid;
        else
            left = mid + 1;
    }
    return left;
}
int findMin(vector<int>& nums) {
    int left = 0, right = nums.size() - 1, target = nums[left];
    while (left < right) {
        int mid = left + (right - left) / 2;
        if (nums[mid] >= target)
            left = mid + 1;
        else
            right = mid;
    }
    if (nums[left] > nums[0])
        return nums[0];
    else
        return nums[left];
}
